<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <input type="button" value="hello" id="test">
    <script>
        var value = "change";
        var test = document.getElementById("test");
        // 直接使用this输出值
        // test.onclick = function(){
        //     go();//不显示hello，this指向window，函数正常调用
        // }
        // function go(){
        //     console.log(this.value);
        // }

        // 用箭头函数解决this指向的问题
        test.onclick = function(){
            setTimeout(()=>{
                console.log(this.value);
            },300)
        }

        //使用bind来解决指向问题，改变函数内部this，关键字的指向
        test.onclick = function(){
            setTimeout(function(){
                console.log(this.value);
            }.bind(this),300)
        }
        
        
        //自定义属性data-name=value
        test.onclick = function(){
            var self = this;
            setTimeout(function(){
                console.log(self.value);
            },300)
        }
    </script>
</body>
</html>